<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>轻云酒店 后台登录系统</title>
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta http-equiv="Access-Control-Allow-Origin" content="*">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
    <meta name="apple-mobile-web-app-status-bar-style" content="black">
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="format-detection" content="telephone=no">
    <link rel="icon" th:href="@{/static/images/favicon.ico}">
    <link rel="stylesheet" th:href="@{/static/lib/layui-v2.8.4/css/layui.css}" media="all">
    <link rel="stylesheet" th:href="@{/static/lib/layui-v2.8.4/css/mouse.css}" media="all">
    <link rel="stylesheet" th:href="@{/static/lib/captcha/css/verify.css}">
    <style>
        .main-body {top:50%;left:50%;position:absolute;-webkit-transform:translate(-50%,-50%);-moz-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);-o-transform:translate(-50%,-50%);transform:translate(-50%,-50%);overflow:hidden;}
        .login-main .login-bottom .center .item input {display:inline-block;width:227px;height:22px;padding:0;position:absolute;border:0;outline:0;font-size:14px;letter-spacing:0;}
        .login-main .login-bottom .center .item .icon-1 {background:url(/static/images/icon-login.png) no-repeat 1px 0;}
        .login-main .login-bottom .center .item .icon-2 {background:url(/static/images/icon-login.png) no-repeat -54px 0;}
        .login-main .login-bottom .center .item .icon-3 {background:url(/static/images/icon-login.png) no-repeat -106px 0;}
        .login-main .login-bottom .center .item .icon-4 {background:url(/static/images/icon-login.png) no-repeat 0 -43px;position:absolute;right:-10px;cursor:pointer;}
        .login-main .login-bottom .center .item .icon-5 {background:url(/static/images/icon-login.png) no-repeat -55px -43px;}
        .login-main .login-bottom .center .item .icon-6 {background:url(/static/images/icon-login.png) no-repeat 0 -93px;position:absolute;right:-10px;margin-top:8px;cursor:pointer;}
        .login-main .login-bottom .tip .icon-nocheck {display:inline-block;width:10px;height:10px;border-radius:2px;border:solid 1px #9abcda;position:relative;top:2px;margin:1px 8px 1px 1px;cursor:pointer;}
        .login-main .login-bottom .tip .icon-check {margin:0 7px 0 0;width:14px;height:14px;border:none;background:url(/static/images/icon-login.png) no-repeat -111px -48px;}
        .login-main .login-bottom .center .item .icon {display:inline-block;width:33px;height:22px;}
        .login-main .login-bottom .center .item {width:288px;height:35px;border-bottom:1px solid #dae1e6;margin-bottom:35px;}
        .login-main {width:428px;position:relative;float:left;}
        .login-main .login-top {height:117px;background-color:#c2a095;border-radius:12px 12px 0 0;font-family:SourceHanSansCN-Regular;font-size:30px;font-weight:400;font-stretch:normal;letter-spacing:0;color:#fff;line-height:117px;text-align:center;overflow:hidden;-webkit-transform:rotate(0);-moz-transform:rotate(0);-ms-transform:rotate(0);-o-transform:rotate(0);transform:rotate(0);}
        .login-main .login-top .bg1 {display:inline-block;width:74px;height:74px;background:#fff;opacity:.1;border-radius:0 74px 0 0;position:absolute;left:0;top:43px;}
        .login-main .login-top .bg2 {display:inline-block;width:94px;height:94px;background:#fff;opacity:.1;border-radius:50%;position:absolute;right:-16px;top:-16px;}
        .login-main .login-bottom {width:428px;background:#fff;border-radius:0 0 12px 12px;padding-bottom:53px;}
        .login-main .login-bottom .center {width:288px;margin:0 auto;padding-top:40px;padding-bottom:15px;position:relative;}
        .login-main .login-bottom .tip {clear:both;height:16px;line-height:16px;width:288px;margin:0 auto;}
        body {background:url(/static/images/bg.jpg) 0% 0% / cover no-repeat;position:static;font-size:12px;}
        input::-webkit-input-placeholder {color:#a6aebf;}
        input::-moz-placeholder {/* Mozilla Firefox 19+ */            color:#a6aebf;}
        input:-moz-placeholder {/* Mozilla Firefox 4 to 18 */            color:#a6aebf;}
        input:-ms-input-placeholder {/* Internet Explorer 10-11 */            color:#a6aebf;}
        input:-webkit-autofill {/* 取消Chrome记住密码的背景颜色 */            -webkit-box-shadow:0 0 0 1000px white inset !important;}
        html {height:100%;}
        .login-main .login-bottom .tip {clear:both;height:16px;line-height:16px;width:288px;margin:0 auto;}
        .login-main .login-bottom .tip .login-tip {font-family:MicrosoftYaHei;font-size:12px;font-weight:400;font-stretch:normal;letter-spacing:0;color:#9abcda;cursor:pointer;}
        .login-main .login-bottom .tip .forget-password {font-stretch:normal;letter-spacing:0;color:#c2a095;text-decoration:none;position:absolute;right:62px;}
        .login-main .login-bottom .login-btn {width:288px;height:40px;background-color:#c2a095;border-radius:16px;margin:24px auto 0;text-align:center;line-height:40px;color:#fff;font-size:14px;letter-spacing:0;cursor:pointer;border:none;}
        .login-main .login-bottom .center .item .validateImg {position:absolute;right:1px;cursor:pointer;height:36px;border:1px solid #e6e6e6;}
        .footer {left:0;bottom:0;color:#fff;width:100%;position:absolute;text-align:center;line-height:30px;padding-bottom:10px;text-shadow:#000 0.1em 0.1em 0.1em;font-size:14px;}
        .padding-5 {padding:5px !important;}
        .footer a,.footer span {color:#fff;}
        @media screen and (max-width:428px) {.login-main {width:360px !important;}
            .login-main .login-top {width:360px !important;}
            .login-main .login-bottom {width:360px !important;}
        }
    </style>
</head>
<body>
<div class="main-body">
    <div class="login-main">
        <div class="login-top">
            <span> 轻云酒店 后台登录系统</span>
        </div>
        <form class="layui-form login-bottom" lay-filter="form-val">
            <div class="center">
                <div class="item">
                    <label class="icon icon-2" for="username"></label>
                    <input type="text" id="username" name="username" lay-verify="required|account" placeholder="用户名登录" autocomplete="off" class="layui-input" th:value="${username}">
                </div>

                <div class="item">
                    <label class="icon icon-3" for="password"></label>
                    <input type="password" id="password" name="password" lay-verify="required|password" placeholder="密码" autocomplete="off" class="layui-input" value="">
                </div>

                <div class="layui-form-item">
                    <label class="layui-icon layui-icon-vercode" for="captcha"></label>
                    <input type="text" id="captcha" name="captcha" lay-verify="required|captcha" placeholder="图形验证码" autocomplete="off" class="layui-input verification captcha" value="">
                    <div class="captcha-img" style="text-align: center">
                        <img id="captchaPic" src="/verCode" onclick="changeImg()">
                    </div>
                </div>
            </div>
            <div class="tip">
                <div class="layui-form-item flex-content" style="display: flex;align-items: center;">
                    <input class="login-tip " type="checkbox" name="rememberMe" value="true" title="保持登录"style="top:50%">
                    <a href="javascript:" class="forget-password" style="top:35%">忘记密码？</a>
                </div>
            </div>

            <div class="layui-form-item" style="text-align:center; width:100%;height:100%;margin-top:10px; box-sizing: content-box">
                <div id="content"></div>
                <!-- 滑块验证 -->
                <button id="btn" type="button" class="login-btn layui-btn layui-btn layui-btn-fluid layui-hide" >立即登录</button>
                <button id="btn1" class="login-btn layui-btn layui-btn layui-btn-fluid "   lay-submit="" lay-filter="login" STYLE="background-color: #c2a095">立即登录</button>
            </div>
            <a th:href="@{/email}" style="margin-left: 45%">邮箱登录</a>
        </form>
    </div>
</div>
<script th:src="@{/static/lib/layui-v2.8.4/layui.js}" charset="utf-8"></script>
<script>
    let ctx = '[[${#request.contextPath}]]';
</script>
<script th:src="@{/static/lib/jquery-3.4.1/jquery-3.4.1.min.js}" charset="utf-8"></script>
<script th:src="@{/static/lib/captcha/js/jquery.min.js}"></script>
<script th:src="@{/static/lib/captcha/js/crypto-js.js}" charset="utf-8"></script>
<script th:src="@{/static/lib/captcha/js/ase.js}" charset="utf-8"></script>
<script th:src="@{/static/lib/captcha/js/verify.js}" charset="utf-8"></script>
<script th:src="@{/static/lib/layui-v2.8.4/layui.js}" charset="utf-8"></script>
<script th:src="@{/static/lib/layui-v2.8.4/miniMouse.js}" charset="utf-8"></script>
<script th:src="@{/static/lib/jq-module/jquery.particleground.min.js}" charset="utf-8"></script>
<script>
<!--    文字型验证码-->
    function changeImg(){
        document.getElementById("captchaPic").src = "/verCode?r=" + Math.random();
    }


    layui.use(['form'], function () {
        var form = layui.form,
            layer = layui.layer;

        // 登录过期的时候，跳出ifram框架
        if (top.location != self.location) top.location = self.location;

        // 自定义验证规则，如下以验证用户名和密码为例
        form.verify({
            // 函数写法
            // 参数 value 为表单的值；参数 item 为表单的 DOM 对象
            account: function(value, item){
                if(!new RegExp("^[a-zA-Z0-9_\u4e00-\u9fa5\\s·]+$").test(value)){
                    return '用户名不能有特殊字符';
                }
                if(/(^_)|(__)|(_+$)/.test(value)) return '用户名首尾不能出现 _ 下划线';
                if(/^\d+$/.test(value)) return '用户名不能全为数字';
            },
            // 数组写法。
            // 数组中两个成员值分别代表：[正则表达式、正则匹配不符时的提示文字]
        //    密码长度必须为6-12位
            password: [
                /^[\S]{6,12}$/
                ,'密码必须6到12位，且不能出现空格'
            ]
        });



        $('#content').slideVerify({
            baseUrl:'',  //服务器请求地址, 默认地址为安吉服务器;
            containerId:'btn',//pop模式 必填 被点击之后出现行为验证码的元素id
            mode:'pop',     //展示模式
            imgSize : {       //图片的大小对象,有默认值{ width: '310px',height: '155px'},可省略
                width: '400px',
                height: '200px',
            },
            barSize:{          //下方滑块的大小对象,有默认值{ width: '310px',height: '50px'},可省略
                width: '400px',
                height: '40px',
            },
            beforeCheck:function(){  //检验参数合法性的函数  mode ="pop"有效
                let flag = true;
                //实现: 参数合法性的判断逻辑, 返回一个boolean值
                return flag
            },
            ready : function() {},  //加载完毕的回调
            success : function(params) { //成功的回调
                // params为返回的二次验证参数 需要在接下来的实现逻辑回传服务器
                console.log("验证成功", params)
                setTimeout(function () {
                    send(formData);
                }, 1000);
            },
            error : function() {}        //失败的回调
        });

        // 进行登录操作
        form.on('submit(login)', function (data) {
            // jquery 触发点击事件
            formData = form.val('form-val');
            $("#btn").click();
            return false;
        });

        function send(formData){
            // 密码加密
            let key = CryptoJS.lib.WordArray.random(16).toString();
            formData.key = key;
            console.log(formData.key);
            formData.password = aesEncrypt(formData.password, key);
            fetch(ctx + '/login', {
                method: 'POST',
                headers: {
                    'Content-Type': 'application/json'
                },
                body: JSON.stringify(formData),
            }).then(function (response) {
                return response.json();
            }).then(function (result) {
                if (result.code === 200) {
                    layer.msg(result.msg, {icon: 1, time: 1000}, function () {
                        location.href = result.msg;
                    });
                } else {
                    layer.msg(result.msg, {icon: 2, time: 1000});
                }
            }).catch(function (error) {
                layer.msg(error, {icon: 2, time: 1000});
            })
        }
    });
</script>
</body>
</html>